import re




job_keywords_cn = {
    'Python': 'Python',
    'Java': 'Java',
    'Frontend': '前端',
    'CAndC++': 'C/C++',
    'Go': 'GO',
    'IOS': 'IOS',
    'Algorithm': '算法工程师',
    'Security': '保安',
    'ProductManager':'产品经理',
    'Android': 'Android',
    'Test': '测试',
    'OperationAndMaintenance': '运维',
    'Embedded': '嵌入式',
    'EditVideo': '视频剪辑',
    'EngineDevelopment': '引擎开发',
    'Linux': 'Linux',
    'SoftwareDevelopment': '软件开发',
    'Barrister': '律师',
    'Accountancy': '会计'
}

# 定义职业分类的关键词映射
job_keywords = {
    'Python': ['Python', 'QT', 'Python(QT)', 'Python实习生','python','PYTHON'],
    'Java': ['Java', 'Java后端', 'Java开发', 'JAVA', 'java'],
    'Frontend': ['前端', 'Web前端', '前端工程师'],
    'CAndC++': ['C++', 'C', 'C++开发工程师', 'C/C/Python', 'c'],
}
# 定义一个函数，根据职位名称判断属于哪个类别
def classify_job(job, keywords_map):
    categories = []  # 存储匹配的类别
    for category, keywords in keywords_map.items():
        if any(keyword in job for keyword in keywords):
            categories.append(category)
    return '/'.join(categories) if categories else 'Other'



# 定义一个函数来提取薪资区间中的最低薪资
def extract_min_salary(salary_str):
    match = re.match(r'(\d+)-(\d+)', salary_str)
    if match:
        return float(match.group(1))
    return None


# 定义一个函数来提取薪资区间中的最低薪资
def extract_max_salary(salary_str):
    match = re.match(r'(\d+)-(\d+)', salary_str)
    if match:
        return float(match.group(2))
    return None

# 定义一个函数来提取薪资区间中的最低薪资
def extract_avg_salary(salary_str):
    match = re.match(r'(\d+)-(\d+)', salary_str)
    if match:
        return (float(match.group(2)) + float(match.group(1)))/2
    return None

def extract_type_salary(salary_str):
    salary = float(salary_str)
    if  salary <= 8 * 1000:
        return 0
    elif salary <= 33 * 1000:
        return 1
    elif salary <= 80 * 1000:
        return 2
    return 2


def normalize_salary(salary_str):
    if re.match(r'\d+-\d+K·\d+薪', salary_str):
        match = re.match(r'(\d+)-(\d+)K·(\d+)薪', salary_str)
        if match:
            low = int(int(match.group(1)) * 1000 * int(match.group(3)) / 12)
            high = int(int(match.group(2)) * 1000 * int(match.group(3)) / 12)
            return f'{low}-{high}元/月'
    # 处理薪资为日薪的格式 "80-160元/天"
    elif re.match(r'\d+-\d+元/天', salary_str):
        match = re.match(r'(\d+)-(\d+)元/天', salary_str)
        if match:
            low = int(match.group(1)) * 22  # 假设一个月22天工作日
            high = int(match.group(2)) * 22
            return f'{low}-{high}元/月'
    elif re.match(r'\d+-\d+K', salary_str):
        match = re.match(r'(\d+)-(\d+)K', salary_str)
        if match:
            low = int(match.group(1)) * 1000
            high = int(match.group(2)) * 1000
            return f'{low}-{high}元/月'
    elif re.match(r'\d+-\d+元/时', salary_str):
        match = re.match(r'(\d+)-(\d+)元/时', salary_str)
        if match:
            low = int(match.group(1)) * 22 * 8 # 假设一个月22天工作日
            high = int(match.group(2)) * 22 * 8
            return f'{low}-{high}元/月'
    elif re.match(r'\d+-\d+元/周', salary_str):
        match = re.match(r'(\d+)-(\d+)元/周', salary_str)
        if match:
            low = int(match.group(1)) * 4 # 假设一个月4周
            high = int(match.group(2)) * 4
            return f'{low}-{high}元/月'
    return salary_str

# 处理学历列映射
def map_degree(degree):
    degree_mapping = {'中专/中技/高中/大专/学历不限': 0, '本科': 1, '硕士/博士': 2}
    if any(x in degree for x in ['中专', '中技', '高中', '大专', '学历不限']):
        return degree_mapping['中专/中技/高中/大专/学历不限']
    elif '本科' in degree:
        return degree_mapping['本科']
    elif any(x in degree for x in ['硕士', '博士']):
        return degree_mapping['硕士/博士']
    return degree_mapping['中专/中技/高中/大专/学历不限']  # 如果没有匹配的学历，返回None或其他值

# 处理学历列映射
def map_experience(experience):
    degree_mapping = {'在校/应届/1年以内/经验不限': 0, '1-3年': 1, '3-5年': 2, '5-10年/10年以上': 3}
    if any(x in experience for x in ['在校', '应届', '1年以内', '经验不限']):
        return degree_mapping['在校/应届/1年以内/经验不限']
    elif '1-3年' in experience:
        return degree_mapping['1-3年']
    elif '3-5年' in experience:
        return degree_mapping['3-5年']
    elif any(x in experience for x in ['5-10年', '10年以上']):
        return degree_mapping['5-10年/10年以上']
    return None  # 如果没有匹配的学历，返回None或其他值

# 处理学历列映射
def map_brand_scale(brand_scale):
    degree_mapping = {'0-20人': 0, '20-99人': 1, '100-499人/500-999人': 2, '1000-9999人/10000人以上': 3}
    if any(x in brand_scale for x in ['500-999人', '100-499人']):
        return degree_mapping['100-499人/500-999人']
    elif any(x in brand_scale for x in ['1000-9999人', '10000人以上']):
        return degree_mapping['1000-9999人/10000人以上']
    elif any(x in brand_scale for x in ['0-20人']):
        return degree_mapping['0-20人']
    elif any(x in brand_scale for x in ['20-99人']):
        return degree_mapping['20-99人']
    return None  # 如果没有匹配的学历，返回None或其他值




